package pe.gob.osce.sirenas.wd.jsf.bean;
/*
* Resumen.
* Objeto 				:	RegistroSolicitudBean.java
* Descripcion 			: 	.
* Fecha de Creacion 	: 	26/02/2015.
* Pry de Creacion 		: 	RNA/RNS.
* Autor 				: 	Julio Cayulla.
* ================================================================================================
* Modificaciones
* Motivo						Fecha		Nombre				Descripcion
* ================================================================================================
*
*/

import java.io.ByteArrayOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.ResourceBundle;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ValueChangeEvent;
import javax.naming.NamingException;

import org.apache.log4j.Logger;
import org.primefaces.context.RequestContext;

import pe.gob.osce.sirenas.model.AreaProfesionDTO;
import pe.gob.osce.sirenas.model.AuditoriaDTO;
import pe.gob.osce.sirenas.model.CentroEstudiosDTO;
import pe.gob.osce.sirenas.model.CredencialDTO;
import pe.gob.osce.sirenas.model.DistritoDTO;
import pe.gob.osce.sirenas.model.EstadoDTO;
import pe.gob.osce.sirenas.model.FichaArbitralDTO;
import pe.gob.osce.sirenas.model.MateriaControversiaDTO;
import pe.gob.osce.sirenas.model.MotivoDTO;
import pe.gob.osce.sirenas.model.PaisDTO;
import pe.gob.osce.sirenas.model.ParametrosDTO;
import pe.gob.osce.sirenas.model.PersonaDTO;
import pe.gob.osce.sirenas.model.ProvinciaDTO;
import pe.gob.osce.sirenas.model.RegionDTO;
import pe.gob.osce.sirenas.model.ViaDTO;
import pe.gob.osce.sirenas.model.ZonaDTO;
import pe.gob.osce.sirenas.svc.ObtenerDatosComunesServiceLocal;
import pe.gob.osce.sirenas.svc.RegistrarDatosPersonalesServiceLocal;
import pe.gob.osce.sirenas.svc.RegistrarFichaArbitroServiceLocal;
import pe.gob.osce.sirenas.util.ModeloException;
import pe.gob.osce.sirenas.wd.jsf.bean.registro.RegistroArbitroFormacionAcademicaBean;
import pe.gob.osce.sirenas.wd.util.ConstanteWeb;
import pe.gob.osce.sirenas.wd.util.RepositorioDatos;
import pe.gob.osce.sirenas.wd.util.TIPO_ESTADO;
import pe.gob.osce.sirenas.wd.util.TareaCargaDatos;
import pe.gob.osce.sirenas.wd.util.UBaseManage;

@ManagedBean
@SessionScoped
public class NavegadorBean extends UBaseManage implements Serializable{
	final static Logger log = Logger.getLogger(NavegadorBean.class);
	/**
	 * 
	 */
	private static final long serialVersionUID = -6504218398693580763L;
//
	@EJB
	private	ObtenerDatosComunesServiceLocal	obtenerDatosComunesService;	
	@EJB
	private	RegistrarFichaArbitroServiceLocal	registrarFichaArbitroService;
	@EJB
	private RegistrarDatosPersonalesServiceLocal registrarDatosPersonalesService;
	
	ResourceBundle propSirenas = ResourceBundle.getBundle(ConstanteWeb.PROPERTIES);
	
	//Temporalmente
	private String tipoFicha;
	private String rolUsuario;
	private PersonaDTO personaDTO;
	
	private RepositorioDatos repositorioDatos;
	private TareaCargaDatos cargaDatos = new TareaCargaDatos();

	private AuditoriaDTO auditoria;
	private Date fecMaxNacimiento;
	private CredencialDTO credencial = new CredencialDTO();

	private List<ZonaDTO> listaZonas = null;
	private List<ViaDTO> listaVias = null;
	private List<RegionDTO> listaRegion = null;
	private List<AreaProfesionDTO> listaAreaProfesion = null;
	private List<CentroEstudiosDTO> listaCentroEstudios = null;
	private List<PaisDTO> listaPais = null;
	private List<MateriaControversiaDTO> listaMateriaControversia=null;
	private List<MotivoDTO> listaMotivos=null;
	private List<ParametrosDTO> listaParametros = null;
	private List<EstadoDTO> listaEstado = null;
	private List<EstadoDTO> listaEstadosIncidencia = null;
	private List<ParametrosDTO> listaModalidadArbitraje = null;
	
	/**Metodos Temporales*/
	public String irBandejaLoginRNA(){
		return "verBandejaLogin";
	}
	public String irBandejaLoginRNS(){
		return "verBandejaLogin";
	}
	public String irRegistroSolicitud(){
		try{
			RepositorioDatos repositorio=obtenerRepositorioDatos();
			this.repositorioDatos=repositorio;
			cargarDatos();		
			this.fecMaxNacimiento= new Date();
			auditoria=new AuditoriaDTO();
			auditoria.setFecRegistro(new Date());
			auditoria.setUsuarioRegistro("SISTEMA");
			establecerObjetoSession(ConstanteWeb.AUDITORIA, auditoria);

		} catch (ModeloException e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_MODELO_TITLE),e.getMessage());
		}catch (Exception e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_VISTA_TITLE),propSirenas.getString(ConstanteWeb.EXC_VISTA_SOLICITUD));
		}
		return "verRegistroSolicitud";
	}
	
	public String irBusquedaPublica(){
		setMensajeroInfo("En Construcción!");
		try{
			RepositorioDatos repositorio=obtenerRepositorioDatos();
			this.repositorioDatos=repositorio;
			cargarDatos();		
			
			auditoria=new AuditoriaDTO();
			auditoria.setFecRegistro(new Date());
			auditoria.setUsuarioRegistro("SISTEMA");
			auditoria.setRolUsuario("PUBLIC");
			
			establecerObjetoSession(ConstanteWeb.AUDITORIA, auditoria);

		} catch (ModeloException e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_MODELO_TITLE),e.getMessage());
		}catch (Exception e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_VISTA_TITLE),propSirenas.getString(ConstanteWeb.EXC_VISTA_SOLICITUD));
		}
		return "verBandejaPublica";
	}
	
	public Date fecNacimientoMax(Date fecha){
		Date fecha2;
		Calendar calendar=Calendar.getInstance();
		calendar.setTime(fecha);
		calendar.add(Calendar.YEAR,-18);
		fecha2=calendar.getTime();
		return fecha2;
	}
	
	/**
	 * Resumen.	Metodo que iniciliza la bandeja de evaluacion de quejas
	 * @return cadena mapeada para la navegacion, tipo String.
	 */
	public String verBandejaSistema() {
		establecerObjetoSession(ConstanteWeb.IND_CARGAR_LISTAS, false);		
		String ruta="verBandejaSistema";
		auditoria=(AuditoriaDTO)obtenerObjetoSession(ConstanteWeb.AUDITORIA);
		try {

			auditoria.setRolUsuario(rolUsuario);
			RepositorioDatos repositorio=obtenerRepositorioDatos();
			this.repositorioDatos=repositorio;
			cargarDatos();
			
			cargarFichaArbitral();
			//ruta=new RegistroArbitroFormacionAcademicaBean().verRegistroArbitro();
		} catch (ModeloException e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_MODELO_TITLE),e.getMessage());
		}catch (Exception e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_VISTA_TITLE),propSirenas.getString(ConstanteWeb.EXC_VISTA_SOLICITUD));
		}
		return ruta;
	}
	
	/**Este metodo es temporal, hasta que se implemente con las funciones de seguridad de OSCE*/
	public String validarCredenciales(){
		String rutaNavegacion=null;
		try{
			if(this.credencial.getUsuario()!=null &&
				!this.credencial.getUsuario().trim().isEmpty() &&
				this.credencial.getPassword()!=null &&
				!this.credencial.getPassword().trim().isEmpty() ){
				if(isInteger(this.credencial.getUsuario(),10)){
					PersonaDTO personaDTO=new PersonaDTO();
					personaDTO.setNumRuc(Long.parseLong(this.credencial.getUsuario()));
					try {
						personaDTO=registrarDatosPersonalesService.obtenerPersona(personaDTO);
						if(personaDTO!=null){

							RepositorioDatos repositorio=obtenerRepositorioDatos();
							this.repositorioDatos=repositorio;
							cargarDatos();
							
							auditoria=new AuditoriaDTO();
							auditoria.setFecRegistro(new Date());
							auditoria.setUsuarioRegistro(personaDTO.getNumRuc().toString());
							auditoria.setRolUsuario(rolUsuario);
							
							establecerObjetoSession(ConstanteWeb.AUDITORIA, auditoria);
							establecerObjetoSession(ConstanteWeb.PERSONA, personaDTO);

							cargarFichaArbitral();
							if(this.tipoFicha.equals("ARBITRO")){
								rutaNavegacion=ConstanteWeb.RPTA_REGISTROARBITRO;								
							}if(this.tipoFicha.equals("SECRETARIO")){
								rutaNavegacion="verRegistroSecretario";	
							}
						}else{
							setMensajeroError("Usuario no Existe", "No se encontro informacion relacionado en el Sistema");
							this.credencial=new CredencialDTO();
						}
					} catch (Exception e) {
						e.printStackTrace();
					}
				}else{
					if(this.credencial.getUsuario().toUpperCase().equals("ADMINISTRADOR")){
						RepositorioDatos repositorio=obtenerRepositorioDatos();
						this.repositorioDatos=repositorio;
						cargarDatos();
						
						auditoria=new AuditoriaDTO();
						auditoria.setFecRegistro(new Date());
						auditoria.setUsuarioRegistro("ADMINISTRADOR");
						auditoria.setRolUsuario("ADMIN");
						establecerObjetoSession(ConstanteWeb.AUDITORIA, auditoria);
						
						rutaNavegacion=ConstanteWeb.RPTA_BANDEJABUSQUEDAFICHA;
					}else{
						setMensajeroInfo("Usuario no Valido");
					}
				}
	
			}else{
				setMensajeroError("Complete el Formulario", null);
			}
		}catch (Exception e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_VISTA_TITLE),propSirenas.getString(ConstanteWeb.EXC_VISTA_SOLICITUD));
		}
		return rutaNavegacion;
	}

	public void abrirBotoneraPopup(){
	    RequestContext context; context = RequestContext.getCurrentInstance();
		context.execute("PF('dialogBotonera').show();");
	}
	public void cargarFichaArbitral()throws Exception {
		/**Inicio Carga de la Ficha en Sesion*/
		FichaArbitralDTO fichaArbitralDTO=new FichaArbitralDTO();
		personaDTO=(PersonaDTO)obtenerObjetoSession(ConstanteWeb.PERSONA);
		try {
			fichaArbitralDTO.setPersona(this.personaDTO);
			fichaArbitralDTO.setTipoFicha(this.tipoFicha);
			fichaArbitralDTO=registrarFichaArbitroService.obtenerFichaArbitral(fichaArbitralDTO);	
			
			String[] descEstado=repositorioDatos.getDescriptoresEstadoLista(fichaArbitralDTO.getEstadoFicha().getIdEstado());
			fichaArbitralDTO.getEstadoFicha().setNomEstado(descEstado[2]);
			
			if(fichaArbitralDTO.getTipoFicha().equals(ConstanteWeb.TIPO_FICHA.ARBITRO.toString())){
				if(fichaArbitralDTO.getIndModalidadArbitro()!=null){
					fichaArbitralDTO.setModalidadArbitro(repositorioDatos.getDescModalidadArbitraje(fichaArbitralDTO.getIndModalidadArbitro().longValue() ));
				}else{
					fichaArbitralDTO.setModalidadArbitro("No registra");
				}
				
			}if(fichaArbitralDTO.getTipoFicha().equals(ConstanteWeb.TIPO_FICHA.SECRETARIO.toString())){
				fichaArbitralDTO.setModalidadArbitro(ConstanteWeb.TIPO_FICHA.SECRETARIO.toString());
			}
			
			

			Long estado=fichaArbitralDTO.getIdEstadoFicha();
			if(estado==Long.parseLong(propSirenas.getString(ConstanteWeb.ID_ESTADO_PENDIENTE))){
				fichaArbitralDTO.setEsPendiente(true);
			}	
			
			establecerObjetoSession(ConstanteWeb.FICHA_REGISTRO, fichaArbitralDTO);

		} catch (ModeloException e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_MODELO_TITLE),e.getMessage());
		}catch (Exception e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_VISTA_TITLE),propSirenas.getString(ConstanteWeb.EXC_VISTA_SOLICITUD));
		}
	}

	/*===================== Metodos  =======================*/
	/**
	* Metodo que realiza la carga de objetos en sesion al momento de iniciar la aplicacion
	*/
	public void cargarDatos()throws Exception{
		
		try {
			/*DEPARTAMENTOS*/
			listaRegion = obtenerDatosComunesService.listarRegion();
			repositorioDatos.setListaRegion(cargaDatos.transformarRegionAListaSelectItem(listaRegion));
			repositorioDatos.setIdRegion(cargaDatos.transformarRegionAMapa(listaRegion));
			
			inicializaListaProvincia(repositorioDatos);
			inicializaListaDistrito(repositorioDatos);
			
//			this.fecMaxNacimiento=repositorioDatos.fecNacimientoMax(this.fecMaxNacimiento);
	//		this.fecMaxNacimiento=fecNacimientoMax(this.fecMaxNacimiento);
			listaAreaProfesion=obtenerDatosComunesService.obtenerListaAreaProfesion();
			repositorioDatos.setListaAreaProfesion(cargaDatos.transformarAreaProfesionAListaSelectItem(listaAreaProfesion));

			listaCentroEstudios=obtenerDatosComunesService.obtenerListaCentroEstudios();
			repositorioDatos.setListaCentroEstudios(cargaDatos.transformarCentroEstudiosAListaSelectItem(listaCentroEstudios));

			listaPais=obtenerDatosComunesService.obtenerListaPais();
			repositorioDatos.setListaPais(cargaDatos.transformarPaisAListaSelectItem(listaPais));
			
			listaMateriaControversia=obtenerDatosComunesService.obtenerListaMateriaControversia();
			repositorioDatos.setListaMateriaControversia(cargaDatos.transformarMateriaControversiaAListaSelectItem(listaMateriaControversia));
			
			listaMotivos=obtenerDatosComunesService.obtenerListaMotivos();
			repositorioDatos.setListaMotivosGeneral(listaMotivos);
			repositorioDatos.setListaMotivosIncidencia(cargaDatos.transformarMotivosAListaSelectItem(listaMotivos,ConstanteWeb.MOTIVO_INCIDENCIA));
			repositorioDatos.setListaMotivosReestablecer(cargaDatos.transformarMotivosAListaSelectItem(listaMotivos,ConstanteWeb.MOTIVO_REESTABLECER));
			
			listaEstadosIncidencia=obtenerDatosComunesService.obtenerListaEstado(1,null);
			repositorioDatos.setListaEstadosIncidencia(listaEstadosIncidencia);
			
			listaEstado=obtenerDatosComunesService.obtenerListaEstado(null,null);
			repositorioDatos.setListaEstadoRegistro(cargaDatos.transformarEstadoAListaSelectItem(listaEstado,TIPO_ESTADO.REGISTRO.getId()));
			repositorioDatos.setListaEstadoFiscalizacion(cargaDatos.transformarEstadoAListaSelectItem(listaEstado,TIPO_ESTADO.FISCALIZACION.getId()));
			repositorioDatos.setListaEstadosGeneral(listaEstado);
			
			listaZonas = obtenerDatosComunesService.obtenerListaZonas();
			repositorioDatos.setListaZonas(cargaDatos.transformarZonasAListaSelectItem(listaZonas));
			
			listaVias = obtenerDatosComunesService.obtenerListaVias();
			repositorioDatos.setListaVias(cargaDatos.transformarViasAListaSelectItem(listaVias));
			
			repositorioDatos.setListaTipoFicha(cargaDatos.cargarListaTipoFicha() );
			
			/*Carga de Listas de Parametros*/
				listaParametros=obtenerDatosComunesService.obtenerListaParametros();
			repositorioDatos.setListaParametros(cargaDatos.transformarParametrosAListaSelectItem(listaParametros));
			
			repositorioDatos.setListaGradoObtenido(cargaDatos.obtenerParametroHijoAListaSelectItem(listaParametros,Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_GRADO_OBTENIDO).trim())));
			repositorioDatos.setListaGradoTitulo(cargaDatos.obtenerParametroHijoAListaSelectItem(listaParametros,Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_GRADO_TITULO).trim())));
			
			repositorioDatos.setListaTipoFormacion(cargaDatos.obtenerParametroHijoAListaSelectItem(listaParametros,Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_TIPO_FORMACION).trim())));

			repositorioDatos.setListaTipoActividad(cargaDatos.obtenerParametroHijoAListaSelectItem(listaParametros,Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_TIPO_ACTIVIDAD).trim())));
			
			repositorioDatos.setListaTipoDuracion(cargaDatos.obtenerParametroHijoAListaSelectItem(listaParametros,Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_TIPO_DURACION).trim())));
			
			repositorioDatos.setListaTipoArbitraje(cargaDatos.obtenerParametroHijoAListaSelectItem(listaParametros,Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_TIPO_ARBITRAJE).trim())));

			
			
			repositorioDatos.setListaOrganoEmision(cargaDatos.obtenerParametroHijoAListaSelectItem(listaParametros,Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_ORGANO_EMISION).trim())));
			
			repositorioDatos.setListaTipoActo(cargaDatos.obtenerParametroHijoAListaSelectItem(listaParametros,Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_TIPO_ACTO).trim())));
			
						
			
			repositorioDatos.setListaModalidadArbitraje(cargaDatos.obtenerParametroHijoAListaSelectItem(listaParametros, Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_TIPO_MODALIDADARBITRAJE))));

			repositorioDatos.setListaReglas(cargaDatos.obtenerReglasAListaSelectItem(listaParametros, Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_REGLAS))));
			
			repositorioDatos.setCorrelativos(cargaDatos.transformarCorrelativosAMapa(listaParametros, Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_CORRELATIVOS))));
			
			repositorioDatos.setListaGenero(cargaDatos.obtenerParametroHijoAListaSelectItem(listaParametros, Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_GENERO))));
			
			repositorioDatos.setPlazoSolicitud(cargaDatos.obtenerPlazoSolicitud(listaParametros, Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_PLAZO_SOLICITUD))) );
			
			repositorioDatos.setListaTipoDocumentoIdentidad(cargaDatos.obtenerParametroHijoAListaSelectItem(listaParametros, Long.parseLong(propSirenas.getString(ConstanteWeb.PARAM_TIPO_DOCUMENTOIDENTIDAD))));
			
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            byte[] archivo = outputStream.toByteArray(); 
            getSession(true).setAttribute(ConstanteWeb.REPORTE_PDF, archivo);

		} catch (ModeloException e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_MODELO_TITLE),e.getMessage());
		}catch (Exception e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_VISTA_TITLE),propSirenas.getString(ConstanteWeb.EXC_VISTA_SOLICITUD));
		}
	}

		
	/**
	* Metodo que realiza la carga de la lista de provincias
	* @param codReniec codigo de la reniec, tipo String
	* @param repositorioDatos almacena los atributos de la carga inicial, tipo RepositorioDatos
	*/
	public void cargarListaProvincia(ValueChangeEvent event)throws Exception{
		List<ProvinciaDTO> lstProvincia = null;
		RepositorioDatos repositorioDatos = obtenerRepositorioDatos();
		Long idRegion=Long.parseLong(event.getNewValue().toString().trim());
		try {
			inicializaListaDistrito(repositorioDatos);
			
			lstProvincia = obtenerDatosComunesService.listarProvincia(idRegion);			
			repositorioDatos.setListaProvincia(cargaDatos.transformarProvinciaAListaSelectItem(lstProvincia));			
			repositorioDatos.setIdProvincia(cargaDatos.transformarProvinciaAMapa(lstProvincia));	
			repositorioDatos.setRegionActiva(idRegion);

		} catch (ModeloException e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_MODELO_TITLE),e.getMessage());
		}catch (Exception e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_VISTA_TITLE),propSirenas.getString(ConstanteWeb.EXC_VISTA_SOLICITUD));
		}
	}
	
	/**
	* Metodo que realiza la carga de la lista de provincias
	* @param codReniec codigo de la reniec, tipo String
	* @param repositorioDatos almacena los atributos de la carga inicial, tipo RepositorioDatos
	*/
	public void cargarListaDistrito(ValueChangeEvent event)throws Exception{
		List<DistritoDTO> lstDistrito = null;
		RepositorioDatos repositorioDatos = obtenerRepositorioDatos();
		Long idProvincia =Long.parseLong(event.getNewValue().toString().trim());
		try {
			lstDistrito = obtenerDatosComunesService.listarDistrito(idProvincia,repositorioDatos.getRegionActiva());			
			repositorioDatos.setListaDistrito(cargaDatos.transformarDistritoAListaSelectItem(lstDistrito));			
			repositorioDatos.setIdDistrito(cargaDatos.transformarDistritoAMapa(lstDistrito));			

		} catch (ModeloException e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_MODELO_TITLE),e.getMessage());
		}catch (Exception e) {
			setMensajeroError(propSirenas.getString(ConstanteWeb.EXC_VISTA_TITLE),propSirenas.getString(ConstanteWeb.EXC_VISTA_SOLICITUD));
		}
	}
	
	
	/*GETTERS AND SETTERS*/


	/**
	 * Metodo que permite obtener auditoria.
	 * @return auditoria , tipo AuditoriaDTO.
	 */
	public AuditoriaDTO getAuditoria() {
		return auditoria;
	}

	

	/**
	 * Metodo que permite obtener tipoFicha.
	 * @return tipoFicha , tipo String.
	 */
	public String getTipoFicha() {
		return tipoFicha;
	}
	/**
	 * Permite actualizar tipoFicha.
	 * @param tipoFicha, tipo String.
	 */
	public void setTipoFicha(String tipoFicha) {
		this.tipoFicha = tipoFicha;
	}
	

	/**
	 * Metodo que permite obtener rolUsuario.
	 * @return rolUsuario , tipo String.
	 */
	public String getRolUsuario() {
		return rolUsuario;
	}
	/**
	 * Permite actualizar rolUsuario.
	 * @param rolUsuario, tipo String.
	 */
	public void setRolUsuario(String rolUsuario) {
		this.rolUsuario = rolUsuario;
	}
	/**
	 * Permite actualizar auditoria.
	 * @param auditoria, tipo AuditoriaDTO.
	 */
	public void setAuditoria(AuditoriaDTO auditoria) {
		this.auditoria = auditoria;
	}
	
	/*Pasar a TAREA CARGAR DATOS*/

	/*Metodos Inicializadores de Combos de Seleccion*/
	/**
	* Metodo que realiza la inicializacion de la lista de provincias
	* @param repositorioDatos almacena los atributos de la carga inicial, tipo RepositorioDatos
	*/
	public void inicializaListaProvincia(RepositorioDatos repositorioDatos){
		repositorioDatos.setListaProvincia(cargaDatos.transformarProvinciaAListaSelectItem(new ArrayList<ProvinciaDTO>()));			
		repositorioDatos.setIdProvincia(cargaDatos.transformarProvinciaAMapa(new ArrayList<ProvinciaDTO>()));			
	}

	/**
	* Metodo que realiza la inicializacion de la lista de provincias
	* @param repositorioDatos almacena los atributos de la carga inicial, tipo RepositorioDatos
	*/
	public void inicializaListaDistrito(RepositorioDatos repositorioDatos){
		repositorioDatos.setListaDistrito(cargaDatos.transformarDistritoAListaSelectItem(new ArrayList<DistritoDTO>()));			
		repositorioDatos.setIdDistrito(cargaDatos.transformarDistritoAMapa(new ArrayList<DistritoDTO>()));			
	}

	/**
	 * Metodo que permite obtener credencial.
	 * @return credencial , tipo CredencialDTO.
	 */
	public CredencialDTO getCredencial() {
		return credencial;
	}

	/**
	 * Permite actualizar credencial.
	 * @param credencial, tipo CredencialDTO.
	 */
	public void setCredencial(CredencialDTO credencial) {
		this.credencial = credencial;
	}
	public Date getFecMaxNacimiento() {
		return fecMaxNacimiento;
	}
	public void setFecMaxNacimiento(Date fecMaxNacimiento) {
		this.fecMaxNacimiento = fecMaxNacimiento;
	}
	public RepositorioDatos getRepositorioDatos() {
		return repositorioDatos;
	}
	public void setRepositorioDatos(RepositorioDatos repositorioDatos) {
		this.repositorioDatos = repositorioDatos;
	}
	
	
}
